/** @brief Definición de la clase Directorio
 * @file   Directorio.h
 */

#ifndef DIRECTORIO_H
#define	DIRECTORIO_H
#include "Recurso.h"
#include "Archivo.h"
#include <vector>

using namespace std;

/**@brief Directorio*/
class Directorio: public Recurso {
private:
    //int max;//maximo de ficheros que puede tener el directorio
    //int tam;//numero de ficheros que contiene el directorio
   // Recurso* *Contenido;//vector de punteros a los recursos que contiene el directorio
    vector<Recurso*> Contenido;
    void arbolAux(int &nivel);
public:
    Directorio(string nombre="sin nombre",string ruta="/",string fecha="0-0-0000",Usuario *_usuario=0,Grupo *_grupo=0, int _permUsu=0, int _permGrp=0, int _permOtros=0);
    Directorio(const Directorio& orig);
    virtual ~Directorio();
    void addContenido(Recurso* rec);
    vector<Recurso*> GetContenido() const;
    /*int GetTam() const;
    void SetMax(int max);
    int GetMax() const;*/
    void listarArbol();
    string tabulador(int nivel);
    void setContenido(vector<Recurso*> Contenido);
    Directorio* getDirectorio(string nombre);
    Archivo* getArchivo(string nombre);
    void addRecurso(Recurso* _rec);
    void nuevoArchivo(string nombre, string fecha, float size, string extension, Usuario *_usuario, Grupo *_grupo, int _permUsu, int _permGrp, int _permOtros);
    void nuevoDirectorio(string _nombre,string _fecha,Usuario *_usuario,Grupo *_grupo, int _permUsu, int _permGrp, int _permOtros);
    Recurso* buscarRecurso(string nombre);
    void ls();
};

#endif	/* DIRECTORIO_H */

